import pandas as pd
import dash
from dash import dcc , html
from dash.dependencies import Input, Output
import plotly.express as px
import plotly.graph_objects as go
import plotly.io as pio
import plotly.offline as py
pio.renderers.default = 'notebook'
Research and Development#
Research and development (R&D) are crucial for driving innovation, creating high-quality jobs, and building a sustainable, low-carbon economy. Recognizing this, the provincial government has developed the StrongerBC plan, which sets out a vision for strengthening R&D in B.C.
df1 = pd.read_csv("~/strongerbc/data/research_and_development_1.csv")
df = df1[df1['Year'] >= 2000]
px.scatter(df1, x= 'Year', y = 'VALUE')
df1 = pd.read_csv("~/strongerbc/data/research_and_development_1.csv")
df = df1[df1['Year'] >= 2000]
px.line(df1, x= 'Year', y = 'VALUE')
# %run app1.py
import pandas as pd
import ipywidgets as widgets
from bqplot import Lines, Figure, LinearScale, DateScale, Axis
import plotly.io as pio
import plotly.offline as py
pio.renderers.default = 'notebook'
df1 = pd.read_csv("~/strongerbc/data/research_and_development_1.csv")
df = df1[df1['Year'] >= 2000]
# Labels and Steps of Year Range
labels = {str(year): str(year) for year in range(df['Year'].min(), df['Year'].max() + 1 , 5)}
steps = {str(year): '' for year in range(df['Year'].min(), df['Year'].max() + 1)}
marks = {**steps, **labels}
# Create widgets
year_slider = widgets.IntRangeSlider(
value=[df['Year'].min(), df['Year'].max()],
min=df['Year'].min(),
max=df['Year'].max(),
step=1,
description='Year:',
continuous_update=False
)
geo_dropdown = widgets.Dropdown(
options=df['GEO'].unique().tolist(),
value=df['GEO'].unique()[0],
description='GEO:'
)
Funder_dropdown = widgets.Dropdown(
options=df['Funder'].unique().tolist(),
value=df['Funder'].unique()[0],
description='Funder:'
)
Performer_dropdown = widgets.Dropdown(
options=df['Performer'].unique().tolist(),
value=df['Performer'].unique()[0],
description='Performer:'
)
ScienceType_dropdown = widgets.Dropdown(
options=df['Science type'].unique().tolist(),
value=df['Science type'].unique()[0],
description='Science type:'
)
Prices_dropdown = widgets.Dropdown(
options=df['Prices'].unique().tolist(),
value=df['Prices'].unique()[0],
description='Prices:'
)
# Create bqplot figure
x_sc = DateScale()
y_sc = LinearScale()
lines = Lines(x=[], y=[], scales={'x': x_sc, 'y': y_sc})
ax_x = Axis(label='Year', scale=x_sc)
ax_y = Axis(label='Value (in millions $)', scale=y_sc, orientation='vertical')
fig = Figure(marks=[lines], axes=[ax_x, ax_y], title='Investment in Innovation')
# Update function
def update_graph(*args):
year_range = year_slider.value
geo_value = geo_dropdown.value
Funder_value = Funder_dropdown.value
Performer_value = Performer_dropdown.value
ScienceType_value = ScienceType_dropdown.value
Prices_value = Prices_dropdown.value
dff = df[(df['Year'] >= year_range[0]) &
(df['Year'] <= year_range[1]) &
(df['GEO'] == geo_value) &
(df['Funder'] == Funder_value)&
(df['Performer'] == Performer_value) &
(df['Science type'] == ScienceType_value) &
(df['Prices'] == Prices_value)]
lines.x = dff['Year']
lines.y = dff['VALUE']
# Observe changes
year_slider.observe(update_graph, 'value')
geo_dropdown.observe(update_graph, 'value')
Funder_dropdown.observe(update_graph, 'value')
Performer_dropdown.observe(update_graph, 'value')
ScienceType_dropdown.observe(update_graph, 'value')
Prices_dropdown.observe(update_graph, 'value')
# Display widgets
display(year_slider, geo_dropdown, Funder_dropdown, Performer_dropdown, ScienceType_dropdown, Prices_dropdown, fig)
# Initial plot
update_graph()